package d0515_Lang包;

// java反射包下的对象属性 的类
import java.lang.reflect.Field;

public class Class类 {
	
	public static void main(String[] args) 
			throws InstantiationException, IllegalAccessException {
		
		test(100);
		
		test("hello");
		
		test('A');
		
		
		// 使用类对象创建 对象
		
		/**
		 * 获取类对象的三种方式
		 * 	1. 对象.getClass
		 * 	2. 类.class
		 * 	3. Class.forName
		 */
		
		Person p = new Person();
		
		Person p1 = Person.class.newInstance(); // == new Person();
		
		p.name = "武松";
		p.age = 28;
		
		p1.name="鲁达";
		p1.age=30;
		
		System.out.println(p);
		System.out.println(p1);
		
		// 查询对象的所有属性
		Field[] fs = Person.class.getDeclaredFields();
		
		for( Field f : fs) {
			System.out.println(f);
		}
		
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	public static void test(Object obj) {
		System.out.println("======== " +obj+ "=========");
		// 获取到 obj 的Class 对象
		Class cls = obj.getClass();
		// 类的完全限定名 = 包名+类名
		System.out.println(cls.getName());		
		// 只显示类名
		System.out.println(cls.getSimpleName());	
		
	}

}


class Person {
	String name;
	int age;
	
	public String toString() {
		return name + ":" +age;
	}
}








